#!/bin/bash

# 脚本功能：解压 .tar.gz 文件，提取二进制文件到TARGET_DIR，赋予执行权限

# 获取参数
TAR_GZ_FILE=$1  # .tar.gz 文件路径
BINARY_NAME=$2  # 可执行文件名

# 检查参数完整
if [ -z "$TAR_GZ_FILE" ] || [ -z "$BINARY_NAME" ]; then
  echo "用法: $0 <tar.gz文件路径> <可执行文件名>"
  exit 1
fi

# 固定目标目录
TARGET_DIR="$HOME/local/bin"

# 检查并创建目标目录
if [ ! -d "$TARGET_DIR" ]; then
  echo "创建目标目录: $TARGET_DIR"
  mkdir -p "$TARGET_DIR"
fi

# 检查 .tar.gz 文件是否存在
if [ ! -f "$TAR_GZ_FILE" ]; then
  echo "错误: 文件 $TAR_GZ_FILE 不存在！"
  exit 1
fi

# 创建临时目录用于解压
TEMP_DIR=$(mktemp -d)
echo "创建临时目录: $TEMP_DIR"

# 解压 .tar.gz 文件到临时目录
echo "正在解压 $TAR_GZ_FILE 到临时目录..."
tar -zxvf "$TAR_GZ_FILE" -C "$TEMP_DIR"

# 查找可执行文件（支持嵌套目录）
BINARY_PATH=$(find "$TEMP_DIR" -name "$BINARY_NAME" -type f)

if [ -z "$BINARY_PATH" ]; then
  echo "错误: 解压后未找到 $BINARY_NAME！"
  rm -rf "$TEMP_DIR"  # 清理临时目录
  exit 1
fi

# 复制二进制文件到目标目录
echo "复制 $BINARY_NAME 到 $TARGET_DIR..."
cp "$BINARY_PATH" "$TARGET_DIR/"

# 赋予执行权限
echo "赋予 $BINARY_NAME 执行权限..."
chmod +x "$TARGET_DIR/$BINARY_NAME"

# 清理临时目录
echo "清理临时目录..."
rm -rf "$TEMP_DIR"

# 添加目录到PATH（如果还未添加）
if ! grep -q "export PATH=\"\$PATH:$TARGET_DIR\"" ~/.bashrc; then
  echo "添加 $TARGET_DIR 到 PATH 环境变量..."
  echo "export PATH=\"\$PATH:$TARGET_DIR\"" >> ~/.bashrc
  echo "已将 $TARGET_DIR 添加到 ~/.bashrc"
fi

# 应用更改到当前会话
echo "应用更改到当前会话..."
export PATH="$PATH:$TARGET_DIR"

# 完成
echo "完成！$BINARY_NAME 已安装到 $TARGET_DIR。"
echo "目录 $TARGET_DIR 已添加到 PATH。"
echo "重新登录或执行 'source ~/.bashrc' 以使更改在新终端中生效。"
echo "现在可直接运行 $BINARY_NAME 了！" 